सी पॉइंटर्स
paunaZ Pna = 10;
paunaZ* pai = &Pna; // car pai ka pzakar saucak hI ESaara kae pataa ka car Pna ka pzakar paunaZaMk.
एक सूचक घोषित करना
C भाषा में सूचक को * (Asterisk प्रतीक) का उपयोग करके घोषित किया जा सकता है। इसे अप्रत्यक्ष सूचक के रूप में भी जाना जाता है जिसका उपयोग एक सूचक को अलग करने के लिए किया जाता है।
paunaZ *P;//saucak kae paunaZ
Axar *sai;//saucak kae Axar
सूचक उदाहरण
जैसा कि आप उपरोक्त आंकड़े में देख सकते हैं, पॉइंटर वैरिएबल नंबर वेरिएबल, यानी, FFF4 के पते को संग्रहीत करता है। संख्या चर का मान 50 है। लेकिन पॉइंटर वैरिएबल P का पता AAA3 है। * (अप्रत्यक्ष ऑपरेटर) की मदद से, हम पॉइंटर वैरिएबल पी के मान को प्रिंट कर सकते हैं। आइए देखें पॉइंटर उदाहरण जैसा कि उपरोक्त आंकड़े के लिए समझाया गया है।
उदाहरण
#EZstamaalakre<PsaTidiAayaAae.Pca>
paunaZ mauqya(){
paunaZ saMqyaa=50;
paunaZ *pai;
pai=&saMqyaa;//BaMdar pataa ka saMqyaa car
laiqaiyae("pataa ka p car hI % \n",pai); // pai raeknaa pataa ka saMqyaa EsalaiP CpaaEZ pai DetaaRhI pataa ka saMqyaa.
laiqaiyae("kimata ka p car hI %paunaZ \n",*pai); // jaIsaa hma jaananaa vah * hI EstaemaalaRkiyaaRgayaa kae Bainnataa P saucak EsalaiP Agar hma CpaaEZ *pai, hma EcCa paanaa kimata saMgazhita par pataa naihita vDara pai.
vaapasakre 0;
}
आउटपुट
pataa ka saMqyaa car hI ii i4
pataa ka pai car hI ii i4
kimata ka pai car hI 50
सरणी के लिए सूचक
paunaZ Aagamana[10];
paunaZ *pai[10]=&Aagamana; // car pai ka pzakar saucak hI ESaara kae pataa ka Pk paunaZaMk sarnai Aagamana.
एक समारोह के लिए सूचक
qaalai DiqaaAae (paunaZ);
qaalai(*pai)(paunaZ) = &pzaDSaZna; // saucak pai hI ESaara kae pataa ka P samaaraeh
संरचना के लिए सूचक
ejatanabaja AnausaucaitaRjanajaatai {
paunaZ maIM;
ApaunaZ Ppaf;
}repafri;
ejatanabaja AnausaucaitaRjanajaatai *pai = &repafri;
सूचक का लाभ
सूचक का उपयोग
सी भाषा में पॉइंटर्स के कई अनुप्रयोग हैं। 1) गतिशील स्मृति आवंटन C भाषा में, हम Malloc () और Caloc () फ़ंक्शन का उपयोग करके गतिशील रूप से मेमोरी को आवंटित कर सकते हैं जहां पॉइंटर का उपयोग किया जाता है। 2) सरणियाँ, कार्य और संरचनाएं सी भाषा में संकेत व्यापक रूप से सरणियों, कार्यों और संरचनाओं में उपयोग किए जाते हैं। यह कोड को कम करता है और प्रदर्शन में सुधार करता है।
(&) संचालक का पता
ऑपरेटर का पता 'और' एक चर का पता देता है। लेकिन, हमें एक चर के पते को प्रदर्शित करने के लिए %यू का उपयोग करने की आवश्यकता है।
उदाहरण
#EZstamaalakre<PsaTidiAayaAae.Pca>
paunaZ mauqya(){
paunaZ saMqyaa=50;
laiqaiyae("kimata ka saMqyaa hI %paunaZ, pataa ka saMqyaa hI %u",saMqyaa,&saMqyaa);
vaapasakre 0;
}
आउटपुट
kimata ka saMqyaa hI 50, pataa ka saMqyaa hI ii i4
नल पॉइंटर
paunaZ *pai=vyaYaZ;
अधिकांश पुस्तकालयों में, सूचक का मान 0 (शून्य) है।
3rd चर का उपयोग किए बिना दो संख्याओं को स्वैप करने के लिए पॉइंटर प्रोग्राम।
उदाहरण
#EZstamaalakre<PsaTidiAayaAae.Pca>
paunaZ mauqya(){
paunaZ P=10,bai=20,*paiR1=&P,*paiR2=&bai;
laiqaiyae("pahlae baDlanaa: *pai 1=%paunaZ *pai 2=%paunaZ",*paiR1,*paiR2);
*paiR1=*paiR1+*paiR2;
*paiR2=*paiR1-*paiR2;
*paiR1=*paiR1-*paiR2;
laiqaiyae("\naak baDlanaa: *pai 1=%paunaZ *pai 2=%paunaZ",*paiR1,*paiR2);
vaapasakre 0;
}
आउटपुट
pahlae baDlanaa: *paiR1=10 *paiR2=20
baaD baDlanaa: *paiR1=20 *paiR2=10
जटिल संकेत पढ़ना
कई चीजें हैं जिन्हें सी में जटिल बिंदुओं को पढ़ते समय ध्यान में रखा जाना चाहिए। चलो ऑपरेटरों की पूर्वता और संबद्धता को देखते हैं जो बिंदुओं के बारे में उपयोग किए जाते हैं।
प्रचालक पूर्ववर्ती संबद्धता (), [] 1 बाएं से दाएं *, पहचानकर्ता 2 दाएं से बाएं डेटा प्रकार 3 -
यहाँ, हमें यह नोटिस करना चाहिए कि, (): यह ऑपरेटर एक ब्रैकेट ऑपरेटर है जिसका उपयोग फ़ंक्शन को घोषित करने और परिभाषित करने के लिए किया जाता है। []: यह ऑपरेटर एक सरणी सबस्क्रिप्ट ऑपरेटर है *: यह ऑपरेटर एक पॉइंटर ऑपरेटर है। पहचानकर्ता: यह सूचक का नाम है। प्राथमिकता हमेशा इसे सौंपी जाएगी। डेटा प्रकार: डेटा प्रकार चर का प्रकार है, जिसमें पॉइंटर को इंगित करने का इरादा है। इसमें हस्ताक्षरित इंट, लॉन्ग, आदि जैसे संशोधक भी शामिल हैं।
पॉइंटर कैसे पढ़ें: paunaZ (*p) [10]।
सूचक को पढ़ने के लिए, हमें यह देखना होगा कि () और [] में समान पूर्वता है। इसलिए, उनकी संबद्धता पर विचार किया जाना चाहिए। संबद्धता को दाएं से छोड़ दिया जाता है, इसलिए प्राथमिकता () पर जाती है। ब्रैकेट () के अंदर, पॉइंटर ऑपरेटर * और पॉइंटर नाम (पहचानकर्ता) पी में एक ही पूर्वता है। इसलिए, उनकी संबद्धता को यहां माना जाना चाहिए जो कि दाएं होने के लिए सही है, इसलिए प्राथमिकता पी पर जाती है, और दूसरी प्राथमिकता *पर जाती है। [] को तीसरी प्राथमिकता असाइन करें क्योंकि डेटा प्रकार की अंतिम पूर्वता है। इसलिए सूचक निम्नलिखित की तरह दिखेगा। चार -> 4 * -> 2 पी -> 1 [१०] -> ३ सूचक को पढ़ा जाएगा क्योंकि P आकार 10 के पूर्णांक के एक सरणी के लिए एक सूचक है।
उदाहरण
kIsae kae paW.naa Agalae saucak?
निम्नलिखित सूचक कैसे पढ़ें?
paunaZ (*pai)(paunaZ (*)[2], paunaZ (*)qaalai))
स्पष्टीकरण
इस पॉइंटर को पढ़ा जाएगा क्योंकि P को इस तरह के फ़ंक्शन का एक सूचक है जो पहले पैरामीटर को पॉइंटर के रूप में एक-आयामी सरणी के आकार के एक आयामी सरणी के रूप में स्वीकार करता है और दूसरा पैरामीटर एक फ़ंक्शन के लिए पॉइंटर के रूप में होता है जो पैरामीटर शून्य है और रिटर्न प्रकार पूर्णांक है।